using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using DG.Tweening;
using TitanX;
public enum ChestInnerItemType{coin,weapon,cure}

// TODO 口 宝箱内物体的开箱效果动画  口 概率问题

//宝箱有可能的物品
[Serializable]
public class ChestInnerItem{
    public ChestInnerItemType chestInnerItemType;
    //物品的素材
    public Sprite itemSprite;
    //数量
    public int num;




}

//特殊物品  地形本身就是一种特殊物体
public class SpecialItem: SingletonGetMono<PreMoveFk>{

    public enum ItemType{Chest,HighTerrain}
    //包厢内可能的物品
    public ChestInnerItem[] chestInnerItems;
    //我愿称之为，波函数坍缩之后，叠加态物体确定其状
    public  ChestInnerItem openChestItem;

    public ItemType itemType;
 
    private Animator animator;


    private void Update()
    {
        



    }

    //执行方法
    public void Excute(){
        switch(itemType){
            
            case ItemType.Chest:

              //  Player.Instance.preBox.SetActive(false);
                PlayerWaitBoxManger.Instance.Hide();
                //随机概率取值:宝箱有可能开出：金币，武器，
                //再宝箱建一个子物体  ，这个物体旋转就行了

                //概率随机
                int i= RangeUtils.RandArr(new int[]{80,20});
                    openChestItem = chestInnerItems[i];
                    //设置宝箱内物体图片
                   
                  animator.SetBool("isOpen", true);

            break;

            case ItemType.HighTerrain:
            break;

        }


    }

    private void Start(){
        animator= transform.GetComponent<Animator>();
    }


    //动画器直接调用
    public void OpenChestFinish(){
        
        switch(openChestItem.chestInnerItemType){
            case ChestInnerItemType.coin:
                
            break;



        }

        transform.GetChild(0).GetComponent<SpriteRenderer>().sprite = openChestItem.itemSprite;
        transform.GetChild(0).gameObject.SetActive(true);



        animator.SetBool("open", false);

        GameManger.Instance.AddCoin(openChestItem.num);
       
        Invoke("gmDestroy", 1f);

      // 

    }



    public void gmDestroy()
    {
      //  Player.Instance.preBox.SetActive(true);

        PlayerWaitBoxManger.Instance.Show();

        Destroy(gameObject);
    }

    public interface ItemService{

        public void action();

    }



}